package com.dferraz.teste;

import static org.junit.Assert.assertEquals;

import java.util.Date;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.dferraz.produto.Produto;
import com.dferraz.produto.ProdutoRN;

public class ProdutoTest extends TestHeranca{

	@Before
	public void setup() {
		Produto p1 = new Produto("Unid", "Camiseta Feminino", new Date(), 5,
				20.00f);
		Produto p2 = new Produto("Unid", "Camiseta Feminino", new Date(), 3,
				20.00f);
		Produto p3 = new Produto("Unid", "Camiseta Feminino", new Date(), 6,
				20.00f);
		Produto p4 = new Produto("Unid", "Camiseta Feminino", new Date(), 3,
				20.00f);
		Produto p5 = new Produto("Unid", "Camiseta Feminino", new Date(), 1,
				20.00f);
		
		ProdutoRN produtoRN = new ProdutoRN();
		
		produtoRN.salvar(p1);
		produtoRN.salvar(p2);
		produtoRN.salvar(p3);
		produtoRN.salvar(p4);
		produtoRN.salvar(p5);

	}

	@After
	public void limpaBanco() {
		//Criteria lista = sessao.createCriteria(Produto.class);
		//@SuppressWarnings("unchecked")

		ProdutoRN produtoRN = new ProdutoRN();
		
		List<Produto> produtos = produtoRN.listar();

		for (Produto produto : produtos) {
			produtoRN.excluir(produto);
		}
		
	}

	@Test
	public void salvarProdutoTest() {
	
		//Query consulta = pesquisar("Fe");
		//Produto produtoPesquisado = (Produto) consulta.uniqueResult();
		
		ProdutoRN produtoRN = new ProdutoRN();
		
		Produto produtoSalvo = new Produto("Unid", "Camiseta Masculina", new Date(), 10, 20.00f);
		
		produtoRN.salvar(produtoSalvo);
		
		Produto produtoPesquisado = produtoRN.pesquisarPorNome("Ma");

		assertEquals("Unid", produtoPesquisado.getUnidade());
	}

	@Test
	public void listaProdutosTest() {
		//Criteria lista = sessao.createCriteria(Produto.class);
		//@SuppressWarnings("unchecked")
		//List<Produto> produtos = lista.list();
		
		ProdutoRN produtoRN = new ProdutoRN();
		
		List<Produto> produtos = produtoRN.listar();
		
		

		assertEquals(5, produtos.size());
	}

	/*@Test
	public void excluirProdutoTest() {
		Query consulta = pesquisar("Fe");
		Produto produtoDeletar = (Produto) consulta.uniqueResult();

		sessao.delete(produtoDeletar);

		produtoDeletar = (Produto) consulta.uniqueResult();

		assertNull(produtoDeletar);

	}

	@Test
	public void alteracaoProdutoTest() {
		Query consulta = pesquisar("Fe");
		Produto produtoAlterado = (Produto) consulta.uniqueResult();
		produtoAlterado.setEstoque(15);

		sessao.update(produtoAlterado);
		produtoAlterado = (Produto) consulta.uniqueResult();

		assertEquals(15, produtoAlterado.getEstoque().intValue());
	}

	private Query pesquisar(String parametro) {
		String sql = "from Produto p where p.descricao like :descricao";
		Query consulta = sessao.createQuery(sql);
		consulta.setString("descricao", "%" + parametro + "%");
		return consulta;
	}*/

}
